On Correctness of Buffer Implementations in a Concurrent Lambda Calculus with Futures
نویسندگان
چکیده
Motivated by the question of correctness of a specific implementation of concurrent buffers in the lambda calculus with futures underlying Alice ML, we prove that concurrent buffers and handled futures can correctly encode each other. Correctness means that our encodings preserve and reflect the observations of mayand must-convergence, and as a consequence also yields soundness of the encodings with respect to a contextually defined notion of program equivalence. While these translations encode blocking into queuing and waiting, we also describe an adequate encoding of buffers in a calculus without handles, which is more low-level and uses busy-waiting instead of blocking. Furthermore we demonstrate that our correctness concept applies to the whole compilation process from high-level to low-level concurrent languages, by translating the calculus with buffers, handled futures and data constructors into a small core language without those constructs.
منابع مشابه
On Proving the Equivalence of Concurrency Primitives
Various concurrency primitives have been added to sequential programming languages, in order to turn them concurrent. Prominent examples are concurrent buffers for Haskell, channels in Concurrent ML, joins in JoCaml, and handled futures in Alice ML. Even though one might conjecture that all these primitives provide the same expressiveness, proving this equivalence is an open challenge in the ar...
متن کاملProgram Equivalence for a Concurrent Lambda Calculus with Futures
Reasoning about the correctness of program transformations requires a notion of program equivalence. We present an observational semantics for the concurrent lambda calculus with futures λ(fut), which formalizes the operational semantics of the programming language Alice ML. We show that natural program optimizations, as well as partial evaluation with respect to deterministic rules, are correc...
متن کاملA Concurrent Lambda Calculus with Futures
We introdu e a new on urrent lambda al ulus with futures, (fut), to model the operational semanti s of onurrent extensions of ML. (fut) an safely express a variety of high-level on urren y onstru ts, in luding hannels, semaphores, or ports. Safe implementations of these onstru ts in (fut) annot be orrupted in any well-typed ontext. We prove safety on basis of a linear type system.
متن کاملOn Conservativity of Concurrent Haskell
The calculus CHF models Concurrent Haskell extended by concurrent, implicit futures. It is a lambda and process calculus with concurrent threads, monadic concurrent evaluation, and includes a pure functional lambda-calculus PF which comprises data constructors, caseexpressions, letrec-expressions, and Haskell’s seq. Our main result is conservativity of CHF as extension of PF. This allows us to ...
متن کاملObservational Semantics for a Concurrent Lambda Calculus with Reference Cells and Futures
We present an observational semantics for λ(fut), a concurrent λ-calculus with reference cells and futures. The calculus λ(fut) models the operational semantics of the concurrent higher-order programming language Alice ML. Our result is a powerful notion of equivalence that is the coarsest nontrivial congruence distinguishing observably different processes. It justifies a maximal set of correct...
متن کامل